﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
namespace RM.WinClient.Utilities
{

    public class TestTimer
    {
        static Timer ticks = new Timer(1000);
        static int runningTime;
        static DateTime mStartDateTime;
        static DateTime mEndDateTime;

        public delegate void StopTest();
        public static event StopTest OnStop;

        public delegate void StartTest();
        public static event StartTest OnStart;

        public delegate void Ticks();
        public static event Ticks OnTick;


        public static int RunningTime
        {
            get { return runningTime; }
        }

        public static DateTime StartDateTime
        {
            get { return mStartDateTime; }
        }

        public static DateTime EndDateTime
        {
            get { return mEndDateTime; }
        }

        public static void Stop()
        {
            mEndDateTime = DateTime.Now;
            ticks.Stop();
            if (OnStop != null)
                OnStop();
        }

        public static void Pause()
        {
            ticks.Enabled = false;
        }

        public static void Resume()
        {
            ticks.Enabled = true;
        }

        private static void ticks_Elapsed(object sender, ElapsedEventArgs e)
        {
            runningTime++;
            if (OnTick != null)
                OnTick();
        }

        public static void Start()
        {
            if (OnStart != null)
                OnStart();
            ticks.Elapsed += new ElapsedEventHandler(ticks_Elapsed);
            runningTime = 0;
            mStartDateTime = DateTime.Now;
            ticks.Start();
        }
    }
}
